﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Generic.Contract;

namespace Contract.Business.Entity
{
    //Criado por : Gustavo
    //Data       : 10/22/2011 1:20:56 PM
    public class BEProduto : BEGeneric
    {
        #region Atributos
        private string _Descricao;
        private BESubGrupo _SubGrupo;
        private int _CodigoSubGrupo;
        private bool _Ativo;

        #endregion

        #region Propriedades
        public string Descricao
        {
            get
            {
                return this._Descricao;
            }
            set
            {
                if (this._Descricao != value)
                {
                    this.SendPropertyChanging();
                    this._Descricao = value;
                    this.SendPropertyChanged("Descricao");
                }
            }
        }

        public BESubGrupo SubGrupo
        {
            get
            {
                return this._SubGrupo;
            }
            set
            {
                BESubGrupo previousValue = this._SubGrupo;
                if ((previousValue == null) || (!previousValue.Equals(value)))
                {
                    this.SendPropertyChanging();
                    this._SubGrupo = value;
                    if (value != null)
                    {
                        this._CodigoSubGrupo = value.Codigo;
                    }
                    else
                    {
                        this._CodigoSubGrupo = default(int);
                    }
                    this.SendPropertyChanged("SubGrupo");
                }
            }
        }

        public int CodigoSubGrupo
        {
            get
            {
                return this._CodigoSubGrupo;
            }
            set
            {
                if (this._CodigoSubGrupo != value)
                {
                    this.SendPropertyChanging();
                    this._CodigoSubGrupo = value;
                    this.SendPropertyChanged("CodigoSubGrupo");
                }
            }
        }

        public bool Ativo
        {
            get
            {
                return this._Ativo;
            }
            set
            {
                if (this._Ativo != value)
                {
                    this.SendPropertyChanging();
                    this._Ativo = value;
                    this.SendPropertyChanged("Ativo");
                }
            }
        }
        #endregion

        #region Métodos Override
        public override string ToString()
        {
            return this.Descricao;
        }

        public override bool Equals(object obj)
        {
            try
            {
                return this.Codigo == ((BEProduto)obj).Codigo;
            }
            catch (Exception)
            {
                return false;
            }
        }
        #endregion
    }
}
